
package Model.Settings;

import Model.Exceptions.PathFileException;
import Model.FileId;
import Model.PathFile;

/**
 * 
 * La classe ModelSettings éfinie un ensemble variables statiques utile les classes
 * FileId et PathFile
 * 
 * @author      Frank Djomo
 * @author      Christelle SIAGO HAPPI
 * @author      djomopoueme@gmail.com
 * @author      christelle.siagohappi@gmail.com
 * @version     1.0
 * @see FileId
 * @see PathFile
 */
public class ModelSettings {
    /**
    * Nombre max du fileid
    */
    final static public int MAX_FILEID = 2147483647;


    /**
    * Nombre min du fileid
    */
    final static public int MIN_FILEID = 0;

    /**
    * La taille maximum d'un nom de fichier
    */
    final static public int MAX_PATHSIZE = 20;


    /**
    * La taille minimum d'un nom de fichier
    */
    final static public int MIN_PATHSIZE = 1;

    /**
    * Teste si un fileid est valide
    * @param fileid Le fileid à tester
    * @return <code>true</code> si valide 
    *            <code>false</code> sinon 
    */
    private static boolean isFileIdConformed(int fileid) {
        return (fileid >= ModelSettings.MIN_FILEID && fileid <= ModelSettings.MAX_FILEID);
    }

    /**
    *  Teste si le fileid est conforme
    * @param fileid  FileId à tester
    * @return <code>true</code> si conforme 
    *            <code>false</code> sinon 
    */
    public static boolean checkFileId(int fileid)  {
        return isFileIdConformed(fileid);
    }


    /**
    * Teste si le nom de fichier est conforme
    * @param path Le nom de fichier
    * @return true if check is succedd
    */
    private static boolean isPathFileConformed(String path) {
        return (path != null && path.length() >= ModelSettings.MIN_PATHSIZE && path.length() <= ModelSettings.MAX_PATHSIZE);
    }
    /**
    *  Teste si le path est conforme
    * @param path  Chemin du fichier à tester
    * @return <code>true</code> si conforme 
    *            <code>false</code> sinon 
    */
    public static boolean checkPathSize(String path ) throws PathFileException {
        return isPathFileConformed(path);
    } 
}
